﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HomeCare.Model;
using HomeCare.Control;

namespace HomeCare.View
{

    public partial class CadTela : Form
    {
        int id;
        private String acao = String.Empty;
        public CadTela()
        {
            InitializeComponent();
        }


        private void CadRotina_Load(object sender, EventArgs e) {
            BloquearCampos();
            BloquearBotoes();
            BloquearBotoesComando();
            LimparCampos();

            //Verifica Acesso aos botoes
            Pessoa pessoa = new Pessoa();
            pessoa.id = PessoaEstatica.ID;
            Tela telaAcesso = new Tela();
            telaAcesso.id = 10;
            telaAcesso.descricao = this.Name;
            VerificaAcesso(pessoa, telaAcesso);
        }

        private void btnIncluir_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnIncluir.Enabled = true;
            acao = "Incluir";
        }

        private void btnAlterar_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnAlterar.Enabled = true;
            ConTela conTela = new ConTela(this);
            conTela.Show();
            acao = "Alterar";
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnExcluir.Enabled = true;
            acao = "Excluir";
            ConTela consultaTela = new ConTela(this);
            consultaTela.Show();
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            BloquearBotoesComando();
            DesbloquearBotoes();
            btnConsultar.Enabled = true;

            acao = "Consultar";
            ConTela consultaTela = new ConTela(this);
            consultaTela.Show();
        }

        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            TelaControl telaControl = new TelaControl();
            Tela tela = new Tela();
            tela.id = id;
            tela.tela = tbxTela.Text;
            tela.descricao = tbxDescricao.Text;

            string msg = telaControl.ValidaTela(tela);
            if (String.IsNullOrEmpty(msg))
            {
                switch (acao)
                {
                    case "Incluir":
                        bool retorno = telaControl.InsereTela(tela);
                        if (retorno)
                        {
                            MessageBox.Show("Tela inserido com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao inserir o Tela", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;
                    case "Alterar":
                        bool retorno2 = telaControl.AlteraTela(tela);
                        if (retorno2)
                        {
                            MessageBox.Show("Tela alterada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao alterar a Tela", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;

                    case "Excluir":
                        bool retorno3 = telaControl.ExcluiTela(tela);
                        if (retorno3)
                        {
                            MessageBox.Show("Tela excluido com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao excluir o tela", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;
                }

                BloquearCampos();
                BloquearBotoes();
                LimparCampos();

                //Verifica Acesso aos botoes
                Pessoa pessoa = new Pessoa();
                pessoa.id = 1;
                Tela telaAcesso = new Tela();
                telaAcesso.id = 10;
                telaAcesso.descricao = this.Name;
                VerificaAcesso(pessoa, telaAcesso);
            }
            else
                MessageBox.Show(msg, "Erro de validação", MessageBoxButtons.OK, MessageBoxIcon.Error);
 
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            BloquearCampos();
            BloquearBotoes();
            LimparCampos();

            //Verifica Acesso aos botoes
            Pessoa pessoa = new Pessoa();
            pessoa.id = 1;
            Tela telaAcesso = new Tela();
            telaAcesso.id = 10;
            telaAcesso.descricao = this.Name;
            VerificaAcesso(pessoa, telaAcesso);
        }
        private void DesbloquearCampos()
        {
            tbxTela.Enabled = true;
            tbxDescricao.Enabled = true;
        }

        private void BloquearCampos()
        {
            tbxTela.Enabled = false;
            tbxDescricao.Enabled = false;
        }

        private void LimparCampos()
        {
            tbxTela.Text = String.Empty;
            tbxDescricao.Text = String.Empty;
        }

        private void BloquearBotoes()
        {
            btnCancelar.Enabled = false;
            btnConfirmar.Enabled = false;
        }

        private void DesbloquearBotoes()
        {
            btnCancelar.Enabled = true;
            btnConfirmar.Enabled = true;
        }

        private void BloquearBotoesComando()
        {
            btnIncluir.Enabled = false;
            btnAlterar.Enabled = false;
            btnExcluir.Enabled = false;
            btnConsultar.Enabled = false;
        }

        private void DesbloquearBotoesComando()
        {
            btnIncluir.Enabled = true;
            btnAlterar.Enabled = true;
            btnExcluir.Enabled = true;
            btnConsultar.Enabled = true;
        }
        private void VerificaAcesso(Pessoa pessoa, Tela tela)
        {
            AcessoControl acessoControl = new AcessoControl();
            DataSet acessoUsuario = acessoControl.VerificaAcesso(pessoa, tela);
            foreach (DataRow row in acessoUsuario.Tables[0].Rows)
            {
                if (row["Inclusao"].ToString() == "S")
                    btnIncluir.Enabled = true;
                if (row["Alteracao"].ToString() == "S")
                    btnAlterar.Enabled = true;
                if (row["Exclusao"].ToString() == "S")
                    btnExcluir.Enabled = true;
                if (row["Consulta"].ToString() == "S")
                    btnConsultar.Enabled = true;
            }
        }

        public void RecebeTela(Tela tela)
        {
            id = tela.id;
            tbxTela.Text = tela.tela;
            tbxDescricao.Text = tela.descricao;

        }


    }
}
